In storage systems for digital computer systems, it has become common to use error detection and correction (EDC) codes to facilitate detection of errors that may develop in the stored data and to correct such errors. Typically, for example, data is stored on a disk or tape storage device along with associated EDC codes and, when the data is retrieved, the EDC code can be retrieved therewith and used to detect and correct errors that may develop while the data has been stored.
More recently, storage systems have been developed in which data is stored on, and retrieved from, multiple storage devices in parallel. U.S. Pat. No. 5,202,979, entitled Storage System Using Multiple Independently Mechanically-Driven Storage Units, issued Apr. 13, 1993, in the name of W. Daniel Hillis, et al., and assigned to the assignee of the present application, describes such a system. In the aforementioned Hillis patent, an adapter stores data in, and retrieves data from, a set of storage devices SD(j). The adapter provides, in parallel in a series of iterations "i", data words DW(i)(j) to the storage devices SD(j) ("j" is an index from "1" to "J", where "J" is the number of storage devices storing data words in the storage system). That is, during each iteration i.sub.k, the adapter transmits a set of data words DW(i.sub.k)(1) through DW(i.sub.k)(J) to the storage devices SD(1) through SD(J) for storage. In each iteration "i.sub.k," the adapter also generates an EDC code EDC(i.sub.k) using all of the data words DW(i.sub.k)(1) through DW(i.sub.k)(J), and stores the EDC code in one or more separate EDC storage devices, generally identified SD(edc). When retrieving the previously-stored data, the adapter can retrieve all of the data words DW(i.sub.k)(1) through DW(i.sub.k)(J) stored for a particular iteration, along with the EDC code EDC(i.sub.k) associated therewith, and perform an error detection operation to determine if an error had developed while the data was stored. If the adapter determines that an error had developed, it can further use the EDC code EDC(i.sub.k) to identify the error and correct it. The adapter may repeat these operations to store data words for successive iterations, and in the retrieval of the data words that had been stored in each iteration.
The arrangement described in the Hillis, et al., patent provides a number of advantages. First, since data is stored in, and retrieved from, a number of storage devices in parallel, storage and retrieval operations can proceed faster than for operations with one storage device. Thus, relatively slow inexpensive storage devices can be used to effect storage and retrieval of large blocks of data at relatively high speeds; high-speed individual storage devices, which if available would likely be more expensive, would not be required to achieve similar storage and retrieval speeds. In addition, since the EDC codes are generated with respect to data words across storage devices, if a storage device SD(j.sub.f) fails, is the data words DW(i)j.sub.f) in that storage device can be reconstructed using the data words from the other storage devices and the associated EDC codes EDC(i) From the storage device SD(edc), thereby enhancing reliable availability of data from the storage system.
However, the arrangement described in the Hillis, et al., patent makes use of a single point of control, namely the adapter, to generate the EDC codes EDC(i) for each iteration. This is satisfactory if the storage system receives data from, for example, a single source. Recently, parallel computer systems have been developed in which the storage system may receive data from a number of processing nodes independently. One such system is described in the aforementioned Wells, et al., and Douglas, et al., patent applications. That system includes a number of processing nodes and a number of input/output devices, which may include storage devices, interconnected by communications network. The communications network transfers messages, each including data, between processing nodes, on the one hand, and input/output devices, on the other hand, to facilitate storage of data in, or retrieval of data from, their respective storage devices. In such an arrangement, no one single device is connected between all of the processing nodes and all of the input/output devices to generate EDC codes or to correct data in a manner similar to the adapter in the system described in the aforementioned Hillis, et al., patent.